﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Sistema_Totem.Presentacion.Contrato.Proyectos;
using Sistema_Totem.Logica.Comandos;
using Sistema_Totem.Clases;
using Sistema_Totem.Logica.Comandos.ComadoProyecto;
using Sistema_Totem.Logica.Fabricas;

namespace Sistema_Totem.Presentacion.Presentador.Proyectos
{
    public class PresentadorConsultarProyectoCompleto
    {
        #region Atributos

        private IContratoConsultarProyectoCompleto _vista;
        private Comando<Entidad> _comando;
        private string _mensajeError = "Existió un error al momento de consultar contra la base de datos";
        private Proyecto _proyecto;

        #endregion Atributos

        #region Constructor

        public PresentadorConsultarProyectoCompleto(IContratoConsultarProyectoCompleto _vista)
        {
            this._vista = _vista;
        }

        #endregion Constructor

        #region Métodos.

        /// <summary>
        /// Dado el id de un proyecto se consultará contra la base de datos, y este procedimiento
        /// imprimira dicho resultado en el formulario ConsultarProyectoCompleto.aspx
        /// </summary>
        /// <param name="_idProyecto">id del proyecto seleccionado desde el gridview de ListarProyecto.aspx</param>
        
        public void ConsultarProyecto(int _idProyecto)
        {
            //Obtenemos el comando desde la fabrica.

            _comando = FabricaComando.CrearComandoConsultarProyecto(_idProyecto);

            //Validamos que el comando no devuelva valor nulo.

            if (_comando.Ejecutar() != null)
            {
                //Si paso, quiere decir que el proyecto existe, y llenaremos el formulario

                _proyecto = _comando.Ejecutar() as Proyecto;

                //Se llena el formulario con la ejecucion del comando.
 
                _vista.NombreProyecto.Text = _proyecto.Nombre;
                _vista.AreaProyecto.Text = _proyecto.Area;
                _vista.CodigoProyecto.Text = _proyecto.Codigo;
                _vista.DescripcionProyecto.Text = _proyecto.Descripcion;
                _vista.FechaInicio.Text = _proyecto.FechaIni.ToShortDateString();
                _vista.FechaFin.Text = _proyecto.FechaFin.ToShortDateString();

                // Falta consulta de plantillas de los proyectos.

            }
            else
            {
                _vista.MensajeError.Text = _mensajeError;
                _vista.MensajeError.Visible = true;
            }
        }

        #endregion Métodos.
    }
}